#!/bin/bash
# 定义提交并推送更改的函数，接受一个自定义的 commit_message 参数
commit_and_push() {
    local commit_message="$1"
    local default_message="$2"  # 使用传入的默认消息

    # 如果用户没有传入 commit message，则使用默认值
    if [ -z "$commit_message" ]; then
        commit_message="$default_message"
    fi

    git checkout master

    # 添加所有文件到暂存区
    git add .
    
    # 获取当前时间
    current_time=$(date +"%Y-%m-%d %H:%M:%S")
    
    # 获取操作系统类型和名称
    os_type=$(uname -s)
    os_name=$(uname -r)
    
    # 配置Git用户身份（这里改为局部配置，仅针对本次会话）
    git config --local user.email "fufenju@openatom.org"
    git config --local user.name "fenju"
    
    # 提交更改，使用传入的 commit_message 并包含当前时间和系统信息
    git commit -m "$commit_message: $current_time ($os_type $os_name)"
    
    # 推送到远程仓库
    git push origin master
}

# 编译构建网站
npm install
npm run build

# 检查子模块是否已经初始化，如果没有则初始化
git submodule update --init --recursive

# 复制生成的网站文件到子模块
cp -r build/** website

# 进入子模块目录
cd website

# 更新 submodule 仓库 website，使用用户提供的 message 或默认的 "new build" 消息
commit_and_push "$1" "new build"

# 返回主仓库目录
cd ../

# 更新主仓库对子仓库的引用
git fetch --recurse-submodules

# 更新源数据仓库，使用用户提供的 message 或默认的 "new data" 消息
commit_and_push "$1" "new data"